import thenaxios from 'axios'
import { Message } from 'element-ui'
import store from '@/store'
import router from '@/router'

const axios = thenaxios.create({
  baseURL: process.env.VUE_APP_BASE_API,
  timeout: 5000
})

// 添加请求拦截器
axios.interceptors.request.use(function(config) {
  if (store.getters.token) {
    config.headers['Authorization'] = `Bearer ${store.getters.token}`
  }
  return config
}, function(error) {
  // 对请求错误做些什么
  return Promise.reject(error)
})

// 添加响应拦截器
axios.interceptors.response.use(function(response) {
  // axios 默认套了一层data
  const { success, message, data } = response.data
  //   要根据success的成功与否决定下面的操作
  if (success) {
    // Message.success(message)
    return data
  } else {
    // 业务已经错误了 还能进then ? 不能 ！ 应该进catch
    Message.error(message) // 提示错误消息
    return Promise.reject(new Error(message))
  }
}, function(error) {
  if (error.response.data.code === 10002) {
    // 清除token值
    store.commit('user/REMOVETOKEN')
    // 跳转到首页
    router.replace('/login')
    Message.error('身份已过期')// 提示错误信息
  }
  return Promise.reject(error)
})

export default ({ url, method = 'GET', headers = {}, data = {}, params = {}}) => {
  return axios({
    url,
    method,
    headers,
    data,
    params
  })
}
